Files
email-tracker/external/duckdb/test/sql/show_select/test_summarize.test
2025-10-24 19:21:19 -05:00

86 lines
2.8 KiB
SQL

# name: test/sql/show_select/test_summarize.test
# description: Test summarize command
# group: [show_select]
statement ok
PRAGMA enable_verification
statement ok
CREATE TABLE types(i INTEGER, j VARCHAR, k HUGEINT, d DOUBLE, e BLOB);
statement ok
INSERT INTO types VALUES
(1, 'hello', 12, 0.5, BLOB 'a\x00b\x00c'),
(2, 'world', -12, -0.5, BLOB ''),
(3, NULL, NULL, NULL, NULL);
query IIII
SELECT UNNEST(['i', 'j', 'k', 'd', 'e']) column_names,
UNNEST(['INTEGER', 'VARCHAR', 'HUGEINT', 'DOUBLE', 'BLOB']) column_types,
UNNEST([MIN(i)::VARCHAR, MIN(j)::VARCHAR, MIN(k)::VARCHAR, MIN(d)::VARCHAR, MIN(e)::VARCHAR]) min,
UNNEST([MAX(i)::VARCHAR, MAX(j)::VARCHAR, MAX(k)::VARCHAR, MAX(d)::VARCHAR, MAX(e)::VARCHAR]) max
FROM (SELECT * FROM types) tbl
----
i INTEGER 1 3
j VARCHAR hello world
k HUGEINT -12 12
d DOUBLE -0.5 0.5
e BLOB (empty) a\x00b\x00c
query IIIIIIIIIIII
SUMMARIZE types;
----
i INTEGER 1 3 3 2.0 1.0 1 2 3 3 0.0
j VARCHAR hello world 2 NULL NULL NULL NULL NULL 3 33.33
k HUGEINT -12 12 2 0.0 16.97056274847714 -12 0 12 3 33.33
d DOUBLE -0.5 0.5 2 0.0 0.7071067811865476 -0.5 0.0 0.5 3 33.33
e BLOB (empty) a\x00b\x00c 2 NULL NULL NULL NULL NULL 3 33.33
query IIIIIIIIIIII
SUMMARIZE SELECT * FROM types;
----
i INTEGER 1 3 3 2.0 1.0 1 2 3 3 0.0
j VARCHAR hello world 2 NULL NULL NULL NULL NULL 3 33.33
k HUGEINT -12 12 2 0.0 16.97056274847714 -12 0 12 3 33.33
d DOUBLE -0.5 0.5 2 0.0 0.7071067811865476 -0.5 0.0 0.5 3 33.33
e BLOB (empty) a\x00b\x00c 2 NULL NULL NULL NULL NULL 3 33.33
# Temporal types
query IIIIIIIIIIII
summarize
from range('2024-01-01'::TIMESTAMP, '2024-04-10'::TIMESTAMP, INTERVAL 1 DAY);
----
range TIMESTAMP 2024-01-01 00:00:00 2024-04-09 00:00:00 99 2024-02-19 12:00:00 NULL 2024-01-25 12:00:00 2024-02-19 12:00:00 2024-03-15 12:00:00 100 0.00
query IIIIIIIIIIII
summarize
SELECT range::DATE AS range from range('2024-01-01'::DATE, '2024-04-10'::DATE, INTERVAL 1 DAY);
----
range DATE 2024-01-01 2024-04-09 98 2024-02-19 12:00:00 NULL 2024-01-26 2024-02-19 2024-03-16 100 0.00
query IIIIIIIIIIII
summarize
SELECT range::TIME AS range from range('2024-01-01'::DATE, '2024-04-10'::DATE, INTERVAL 1 HOUR);
----
range TIME 00:00:00 23:00:00 28 11:30:00 NULL 05:24:35.480769 11:28:55.400975 17:30:41.666667 2400 0.00
# TIMETZ quantiles. Note these are fuzzy because we use DOUBLEs in the sketch.
query IIIIIIIIIIII
SUMMARIZE (SELECT '1:02:03.000000+05:30'::TIMETZ AS ttz);
----
ttz TIME WITH TIME ZONE 01:02:03+05:30 01:02:03+05:30 1 19:32:03+00 NULL 01:02:42+05:30:39 01:02:42+05:30:39 01:02:42+05:30:39 1 0.00
statement ok
SUMMARIZE VALUES (1.0),(6754950520);
# Various overflows
statement ok
SUMMARIZE SELECT 9223372036854775296;
statement ok
summarize select bigint from test_all_types();
statement ok
summarize select 9223372036854775295;