1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
# name: test/sql/function/list/aggregates/mode.test
# description: Test the list_mode aggregate function
# group: [aggregates]
# incorrect usage
statement error
select list_mode()
----
# integers
statement ok
CREATE TABLE range AS SELECT LIST(2) AS i FROM range(100) t1(i)
query I
SELECT list_mode(i) FROM range;
----
2
# strings
statement ok
create table names (name string[])
statement ok
insert into names values (['pedro', 'pedro', 'pedro', 'hannes', 'hannes', 'mark', NULL]);
query I
select list_mode(name) from names;
----
pedro
# temporal types
# date
statement ok
create table dates (v date[])
statement ok
insert into dates values (['2021-05-02', '2021-05-02', '2021-05-02', '2020-02-29', '2020-02-29', '2004-09-01', NULL]);
query I
select list_mode(v) from dates;
----
2021-05-02
# time
statement ok
create table times (v time[])
statement ok
insert into times values (['12:11:49.5', '12:11:49.5', '12:11:49.5', '06:30:00', '06:30:00', '21:15:22', NULL]);
query I
select list_mode(v) from times;
----
12:11:49.5
# timestamp
statement ok
create table timestamps (v timestamp[])
statement ok
insert into timestamps values (['2021-05-02 12:11:49.5', '2021-05-02 12:11:49.5', '2021-05-02 12:11:49.5',
'2020-02-29 06:30:00', '2020-02-29 06:30:00', '2004-09-01 21:15:22', NULL]);
query I
select list_mode(v) from timestamps;
----
2021-05-02 12:11:49.5
# interval
statement ok
create table intervals (v interval[])
statement ok
insert into intervals values
([INTERVAL '5 months 2 days 12 hours 11 minutes 49 seconds',
INTERVAL '5 months 2 days 12 hours 11 minutes 49 seconds',
INTERVAL '5 months 2 days 12 hours 11 minutes 49 seconds',
INTERVAL '2 months 29 days 6 hours 30 minutes',
INTERVAL '2 months 29 days 6 hours 30 minutes',
INTERVAL '9 months 1 day 21 hours 15 minutes 22 seconds',
NULL]);
query I
select list_mode(v) from intervals;
----
5 months 2 days 12:11:49
# huge integers
statement ok
create table hugeints (v hugeint[])
statement ok
insert into hugeints values ([5, 5, 5, 2, 2, 1, NULL]);
query I
select list_mode(v) from hugeints;
----
5
# decimals
statement ok
create table aggr (v decimal(10,2)[]);
statement ok
insert into aggr values ([10, 10, 20, 21]), ([20, 20, 25, 30]), ([NULL]), ([]), (NULL);
query I
select list_mode(v) from aggr;
----
10
20
NULL
NULL
NULL
|