Files
email-tracker/external/duckdb/test/sql/aggregate/aggregates/test_regression.test
2025-10-24 19:21:19 -05:00

393 lines
4.7 KiB
SQL

# name: test/sql/aggregate/aggregates/test_regression.test
# description: Test Regression Functions
# group: [aggregates]
statement ok
PRAGMA enable_verification
query I
select regr_avgx(NULL,NULL)
----
NULL
query I
select regr_avgx(1,1)
----
1
#Corner cases
statement error
select regr_avgx()
----
statement error
select regr_avgx(*)
----
statement error
select regr_avgy()
----
query I
select regr_avgy(NULL,NULL)
----
NULL
query I
select regr_avgy(1,1)
----
1
statement error
select regr_avgy(*)
----
statement error
select regr_count()
----
query I
select regr_count(NULL,NULL)
----
0
query I
select regr_count(1,1)
----
1
statement error
select regr_count(*)
----
statement error
select regr_slope()
----
query I
select regr_slope(NULL,NULL)
----
NULL
query I
select regr_slope(1,1)
----
NAN
statement error
select regr_slope(*)
----
statement error
select regr_r2()
----
query I
select regr_r2(NULL,NULL)
----
NULL
query I
select regr_r2(1,1)
----
NULL
#Corner cases
statement error
select regr_r2(0, 1e230*i) from range(5) tbl(i);
----
statement error
select regr_r2(1e230*i, i) from range(5) tbl(i);
----
query I
select regr_r2(1e230*i, 0) from range(5) tbl(i);
----
NULL
query I
select regr_r2(0, i) from range(5) tbl(i);
----
1
statement error
select regr_r2(*)
----
statement error
select regr_sxx()
----
statement error
select regr_sxx(0, 2e230*i) from range(5) tbl(i)
----
query I
select regr_sxx(2e230*i, 0) from range(5) tbl(i)
----
0
query I
select regr_sxx(NULL,NULL)
----
NULL
query I
select regr_sxx(1,1)
----
0
statement error
select regr_syy()
----
query I
select regr_syy(NULL,NULL)
----
NULL
query I
select regr_syy(1,1)
----
0
statement error
select regr_sxy(*)
----
statement error
select regr_sxy()
----
query I
select regr_sxy(NULL,NULL)
----
NULL
query I
select regr_sxy(1,1)
----
0
statement error
select regr_syy(*)
----
statement error
select regr_intercept()
----
query I
select regr_intercept(NULL,NULL)
----
NULL
query I
select regr_intercept(1,1)
----
NULL
statement error
select regr_intercept(*)
----
statement ok
create table aggr(k int, v decimal(10,2), v2 decimal(10, 2));
statement ok
insert into aggr values(1, 10, null), (2, 10, 11), (2, 20, 22), (2, 25, null), (2, 30, 35);
query II
select k, regr_avgx(v, v2) from aggr group by k ORDER BY ALL;
----
1 NULL
2 22.666667
query II
select k, regr_avgy(v, v2) from aggr group by k ORDER BY ALL;
----
1 NULL
2 20
query III
select k, count(*), regr_count(v, v2) from aggr group by k ORDER BY ALL;
----
1 1 0
2 4 3
query II
select k, regr_slope(v, v2) from aggr group by k ORDER BY ALL;
----
1 NULL
2 0.831409
query II
select k, regr_r2(v, v2) from aggr group by k ORDER BY ALL;
----
1 NULL
2 0.997691
query II
select k, regr_sxx(v, v2) from aggr group by k ORDER BY ALL;
----
1 NULL
2 288.666667
query II
select k, regr_syy(v, v2) from aggr group by k ORDER BY ALL;
----
1 NULL
2 200.000000
query II
select k, regr_sxy(v, v2) from aggr group by k ORDER BY ALL;
----
1 NULL
2 240.000000
query II
select k, regr_intercept(v, v2) from aggr group by k ORDER BY ALL;
----
1 NULL
2 1.154734
query I
select regr_avgx(v, v2) from aggr ;
----
22.666667
query I
select regr_avgy(v, v2) from aggr ;
----
20
query I
select regr_count(v, v2) from aggr ;
----
3
query I
select regr_slope(v, v2) from aggr ;
----
0.831409
query I
select regr_r2(v, v2) from aggr ;
----
0.997691
query I
select regr_sxx(v, v2) from aggr ;
----
288.666667
query I
select regr_syy(v, v2) from aggr ;
----
200.000000
query I
select regr_sxy(v, v2) from aggr;
----
240.000000
query I
select regr_intercept(v, v2) from aggr;
----
1.154734
# Window Function
query I rowsort
select regr_avgx(v, v2) over (partition by k)
from aggr;
----
22.666667
22.666667
22.666667
22.666667
NULL
query I rowsort
select regr_avgy(v, v2) over (partition by k)
from aggr;
----
20.000000
20.000000
20.000000
20.000000
NULL
query I rowsort
select regr_count(v, v2) over (partition by k)
from aggr;
----
0
3
3
3
3
query I rowsort
select regr_slope(v, v2) over (partition by k)
from aggr;
----
0.831409
0.831409
0.831409
0.831409
NULL
query I rowsort
select regr_r2(v, v2) over (partition by k)
from aggr;
----
0.997691
0.997691
0.997691
0.997691
NULL
query I rowsort
select regr_sxx(v, v2) over (partition by k)
from aggr;
----
288.666667
288.666667
288.666667
288.666667
NULL
query I rowsort
select regr_syy(v, v2) over (partition by k)
from aggr;
----
200.000000
200.000000
200.000000
200.000000
NULL
query I rowsort
select regr_sxy(v, v2) over (partition by k)
from aggr;
----
240.000000
240.000000
240.000000
240.000000
NULL
query I rowsort
select regr_intercept(v, v2) over (partition by k)
from aggr;
----
1.154734
1.154734
1.154734
1.154734
NULL