File: mode.test

package info (click to toggle)
duckdb 1.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 558
file content (115 lines) | stat: -rw-r--r-- 2,345 bytes parent folder | download | duplicates (4)
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