# name: test/sql/aggregate/aggregates/test_histogram.test # description: Test histogram aggregation # group: [aggregates] statement ok PRAGMA enable_verification statement ok PRAGMA verify_external query I select histogram(NULL) ---- NULL # Empty Table query I SELECT histogram(i) FROM range(100) tbl(i) WHERE 1=0; ---- NULL query I select histogram(1) ---- {1=1} # Allow ascii characters in strings query I SELECT histogram('、') ---- {、=1} query I SELECT histogram(2) FROM range(100); ---- {2=100} statement ok CREATE TABLE hist_data (g INTEGER, e INTEGER) statement ok INSERT INTO hist_data VALUES (1, 1), (1, 2), (2, 3), (2, 4), (2, 5), (3, 6), (5, NULL) query T SELECT histogram(g) from hist_data ---- {1=2, 2=3, 3=1, 5=1} query T SELECT histogram(e) from hist_data ---- {1=1, 2=1, 3=1, 4=1, 5=1, 6=1} query I select histogram(g) from hist_data group by g%2==0 ORDER BY g%2==0 ---- {1=2, 3=1, 5=1} {2=3} query I select histogram(g) from hist_data where g < 3 ---- {1=2, 2=3} statement ok create table names (name string) statement ok insert into names values ('pedro'), ('pedro'), ('pedro'),('hannes'),('hannes'),('mark'),(null),('Hubert Blaine Wolfeschlegelsteinhausenbergerdorff Sr.'); query I select histogram(name) from names; ---- {Hubert Blaine Wolfeschlegelsteinhausenbergerdorff Sr.=1, hannes=2, mark=1, pedro=3} # Variant time type binding (Issue #3290) query I SELECT histogram(CAST('2021-08-20' AS TIMESTAMP_S)); ---- {'2021-08-20 00:00:00'=1} query I SELECT histogram(CAST('2021-08-20' AS TIMESTAMP_MS)); ---- {'2021-08-20 00:00:00'=1} query I SELECT histogram(CAST('2021-08-20' AS TIMESTAMP_NS)); ---- {'2021-08-20 00:00:00'=1} query I SELECT histogram(CAST('15:05:42' AS TIME)); ---- {'15:05:42'=1} query I SELECT histogram(CAST('15:05:42+00' AS TIME WITH TIME ZONE)); ---- {'15:05:42+00'=1} query I SELECT histogram(CAST('2022-01-02' AS DATE)); ---- {2022-01-02=1} query II rowsort select g,histogram(g) over (partition by g%2) from hist_data; ---- 1 {1=2, 3=1, 5=1} 1 {1=2, 3=1, 5=1} 2 {2=3} 2 {2=3} 2 {2=3} 3 {1=2, 3=1, 5=1} 5 {1=2, 3=1, 5=1} #Corner cases statement error select histogram() ---- statement error select histogram(*) ---- # enums statement ok CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy') statement ok CREATE TABLE enums (e mood) statement ok INSERT INTO enums VALUES ('happy'), ('ok') query I SELECT histogram(e) FROM enums ---- {ok=1, happy=1}