117 lines
1.7 KiB
SQL
117 lines
1.7 KiB
SQL
# name: test/sql/aggregate/aggregates/test_entropy.test
|
|
# description: Test entropy function
|
|
# group: [aggregates]
|
|
|
|
statement ok
|
|
PRAGMA enable_verification
|
|
|
|
statement ok
|
|
PRAGMA verify_external
|
|
|
|
#Corner cases
|
|
statement error
|
|
select entropy()
|
|
----
|
|
|
|
query I
|
|
select entropy(NULL)
|
|
----
|
|
0
|
|
|
|
query I
|
|
select entropy(1)
|
|
----
|
|
0
|
|
|
|
statement error
|
|
select entropy(*)
|
|
----
|
|
|
|
statement ok
|
|
create table aggr(k int);
|
|
|
|
statement ok
|
|
insert into aggr values (0),(1),(1),(1),(4),(0),(3),(3),(2),(2),(4),(4),(2),(4),(0),(0),(0),(1),(2),(3),(4),(2),(3),(3),(1);
|
|
|
|
query I
|
|
select entropy(k) from aggr ;
|
|
----
|
|
2.321928
|
|
|
|
query I
|
|
SELECT entropy(2) FROM range(100);
|
|
----
|
|
0
|
|
|
|
query I
|
|
select entropy(k) from aggr group by k%2 order by all
|
|
----
|
|
1.000000
|
|
1.584963
|
|
|
|
statement ok
|
|
create table names (name string)
|
|
|
|
statement ok
|
|
insert into names values ('pedro'), ('pedro'), ('pedro'),('hannes'),('hannes'),('mark'),(null);
|
|
|
|
query I
|
|
select entropy(name) from names;
|
|
----
|
|
1.459148
|
|
|
|
# arrays
|
|
statement ok
|
|
create table array_names as select case when name is null then null else [name] end l from names
|
|
|
|
query I
|
|
select entropy(l) from array_names;
|
|
----
|
|
1.459148
|
|
|
|
# array of structs
|
|
statement ok
|
|
create table array_of_structs as select case when name is null then null else [{'name': name}] end l from names
|
|
|
|
query I
|
|
select entropy(l) from array_of_structs;
|
|
----
|
|
1.459148
|
|
|
|
query I rowsort
|
|
select entropy(k) over (partition by k%2)
|
|
from aggr;
|
|
----
|
|
1.000000
|
|
1.000000
|
|
1.000000
|
|
1.000000
|
|
1.000000
|
|
1.000000
|
|
1.000000
|
|
1.000000
|
|
1.000000
|
|
1.000000
|
|
1.584963
|
|
1.584963
|
|
1.584963
|
|
1.584963
|
|
1.584963
|
|
1.584963
|
|
1.584963
|
|
1.584963
|
|
1.584963
|
|
1.584963
|
|
1.584963
|
|
1.584963
|
|
1.584963
|
|
1.584963
|
|
1.584963
|
|
|
|
# Empty Table
|
|
query I
|
|
SELECT entropy(i) FROM range(100) tbl(i) WHERE 1=0;
|
|
----
|
|
0
|
|
|