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

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