should be it
This commit is contained in:
179
external/duckdb/test/sql/aggregate/aggregates/test_avg.test
vendored
Normal file
179
external/duckdb/test/sql/aggregate/aggregates/test_avg.test
vendored
Normal file
@@ -0,0 +1,179 @@
|
||||
# name: test/sql/aggregate/aggregates/test_avg.test
|
||||
# description: Test AVG operator
|
||||
# group: [aggregates]
|
||||
|
||||
# scalar average
|
||||
query RR
|
||||
SELECT AVG(3), AVG(NULL)
|
||||
----
|
||||
3
|
||||
NULL
|
||||
|
||||
query RR
|
||||
SELECT AVG(3::SMALLINT), AVG(NULL::SMALLINT)
|
||||
----
|
||||
3
|
||||
NULL
|
||||
|
||||
query RR
|
||||
SELECT AVG(3::DOUBLE), AVG(NULL::DOUBLE)
|
||||
----
|
||||
3
|
||||
NULL
|
||||
|
||||
# test average on sequence
|
||||
statement ok
|
||||
CREATE SEQUENCE seq;
|
||||
|
||||
query R
|
||||
SELECT AVG(nextval('seq'))
|
||||
----
|
||||
1
|
||||
|
||||
query R
|
||||
SELECT AVG(nextval('seq'))
|
||||
----
|
||||
2
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers VALUES (1), (2), (3)
|
||||
|
||||
query RRRR
|
||||
SELECT AVG(i), AVG(1), AVG(DISTINCT i), AVG(NULL) FROM integers
|
||||
----
|
||||
2
|
||||
1
|
||||
2
|
||||
NULL
|
||||
|
||||
query R
|
||||
SELECT AVG(i) FROM integers WHERE i > 100
|
||||
----
|
||||
NULL
|
||||
|
||||
# Intervals
|
||||
statement ok
|
||||
CREATE TABLE intervals(itvl INTERVAL)
|
||||
|
||||
statement ok
|
||||
INSERT INTO intervals VALUES
|
||||
('1 day'),
|
||||
('30 days'),
|
||||
('30 days'),
|
||||
('30 days'),
|
||||
('30 days')
|
||||
|
||||
query II
|
||||
SELECT AVG(itvl), AVG(DISTINCT itvl) FROM intervals
|
||||
----
|
||||
24 days 04:48:00 15 days 12:00:00
|
||||
|
||||
# The only test of AVG(INTERVAL) in the PG test suite...
|
||||
statement ok
|
||||
CREATE TABLE interval_tbl (f1 interval);
|
||||
|
||||
statement ok
|
||||
INSERT INTO interval_tbl (f1) VALUES
|
||||
('@ 1 minute'),
|
||||
('@ 5 hour'),
|
||||
('@ 10 day'),
|
||||
('@ 34 year'),
|
||||
('@ 3 months'),
|
||||
('@ 14 seconds ago'),
|
||||
('1 day 2 hours 3 minutes 4 seconds'),
|
||||
('6 years'),
|
||||
('5 months'),
|
||||
('5 months 12 hours');
|
||||
|
||||
query I
|
||||
select avg(f1) from interval_tbl;
|
||||
----
|
||||
4 years 1 month 10 days 04:18:23
|
||||
|
||||
# invalid use of average
|
||||
statement error
|
||||
SELECT AVG()
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT AVG(1, 2, 3)
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT AVG(AVG(1))
|
||||
----
|
||||
|
||||
# empty average
|
||||
statement ok
|
||||
CREATE TABLE vals(i INTEGER, j DOUBLE, k HUGEINT);
|
||||
|
||||
statement ok
|
||||
INSERT INTO vals VALUES (NULL, NULL, NULL)
|
||||
|
||||
query III
|
||||
SELECT AVG(i), AVG(j), AVG(k) FROM vals;
|
||||
----
|
||||
NULL NULL NULL
|
||||
|
||||
# Temporal values
|
||||
statement ok
|
||||
CREATE OR REPLACE TABLE timestamps AS
|
||||
SELECT range AS ts
|
||||
FROM range('2024-11-01'::DATE, '2024-12-01'::DATE, INTERVAL 1 DAY)
|
||||
|
||||
query I
|
||||
SELECT AVG(ts::DATE)
|
||||
FROM timestamps
|
||||
----
|
||||
2024-11-15 12:00:00
|
||||
|
||||
query I
|
||||
SELECT AVG(ts)
|
||||
FROM timestamps
|
||||
----
|
||||
2024-11-15 12:00:00
|
||||
|
||||
query I
|
||||
SELECT AVG(ts::TIMESTAMPTZ)
|
||||
FROM timestamps
|
||||
----
|
||||
2024-11-15 12:00:00+00
|
||||
|
||||
statement ok
|
||||
CREATE OR REPLACE TABLE times AS
|
||||
SELECT range AS ts
|
||||
FROM range('2024-11-01'::DATE, '2024-11-02'::DATE, INTERVAL 7 MINUTES)
|
||||
|
||||
query I
|
||||
SELECT AVG(ts::TIME)
|
||||
FROM times
|
||||
----
|
||||
11:57:30
|
||||
|
||||
# TIMETZ - just average the normalised times
|
||||
statement ok
|
||||
CREATE TABLE timetzs (ttz TIMETZ);
|
||||
|
||||
statement ok
|
||||
INSERT INTO timetzs VALUES
|
||||
(NULL),
|
||||
('00:00:00+1559'),
|
||||
('00:00:00+1558'),
|
||||
('02:30:00'),
|
||||
('02:30:00+04'),
|
||||
('02:30:00+04:30'),
|
||||
('02:30:00+04:30:45'),
|
||||
('16:15:03.123456'),
|
||||
('02:30:00+1200'),
|
||||
('02:30:00-1200'),
|
||||
('24:00:00-1558'),
|
||||
('24:00:00-1559'),
|
||||
;
|
||||
|
||||
query I
|
||||
SELECT AVG(ttz) FROM timetzs;
|
||||
----
|
||||
14:44:56.193041+00
|
||||
Reference in New Issue
Block a user