should be it
This commit is contained in:
98
external/duckdb/test/sql/aggregate/aggregates/test_sum.test
vendored
Normal file
98
external/duckdb/test/sql/aggregate/aggregates/test_sum.test
vendored
Normal file
@@ -0,0 +1,98 @@
|
||||
# name: test/sql/aggregate/aggregates/test_sum.test
|
||||
# description: Test sum aggregate
|
||||
# group: [aggregates]
|
||||
|
||||
statement ok
|
||||
CREATE TABLE integers(i INTEGER);
|
||||
|
||||
statement ok
|
||||
INSERT INTO integers SELECT * FROM range(0, 1000, 1);
|
||||
|
||||
# positive numbers
|
||||
query I
|
||||
SELECT SUM(i) FROM integers;
|
||||
----
|
||||
499500
|
||||
|
||||
# negative numbers
|
||||
statement ok
|
||||
INSERT INTO integers SELECT * FROM range(0, -1000, -1);
|
||||
|
||||
query I
|
||||
SELECT SUM(i) FROM integers;
|
||||
----
|
||||
0
|
||||
|
||||
# more negative numbers
|
||||
statement ok
|
||||
INSERT INTO integers SELECT * FROM range(0, -1000, -1);
|
||||
|
||||
query I
|
||||
SELECT SUM(i) FROM integers;
|
||||
----
|
||||
-499500
|
||||
|
||||
# now perform sum of a constant
|
||||
query I
|
||||
SELECT SUM(1) FROM integers;
|
||||
----
|
||||
3000
|
||||
|
||||
# negative constant
|
||||
query I
|
||||
SELECT SUM(-1) FROM integers;
|
||||
----
|
||||
-3000
|
||||
|
||||
# negative constant with a low amount of values
|
||||
query I
|
||||
SELECT SUM(-1) FROM integers WHERE i=-1;
|
||||
----
|
||||
-2
|
||||
|
||||
# no values
|
||||
query I
|
||||
SELECT SUM(-1) FROM integers WHERE i>10000;
|
||||
----
|
||||
NULL
|
||||
|
||||
# bigint sum
|
||||
statement ok
|
||||
CREATE TABLE bigints(b BIGINT);
|
||||
|
||||
# a bunch of huge values
|
||||
statement ok
|
||||
INSERT INTO bigints SELECT * FROM range(4611686018427387904, 4611686018427388904, 1);
|
||||
|
||||
# sum them up
|
||||
query I
|
||||
SELECT SUM(b) FROM bigints
|
||||
----
|
||||
4611686018427388403500
|
||||
|
||||
# this is too big for a bigint
|
||||
statement error
|
||||
SELECT SUM(b)::BIGINT FROM bigints
|
||||
----
|
||||
Conversion Error: Type INT128 with value 4611686018427388403500
|
||||
|
||||
#
|
||||
# Order by
|
||||
#
|
||||
statement ok
|
||||
CREATE TABLE doubles(n DOUBLE);
|
||||
|
||||
statement ok
|
||||
INSERT INTO doubles (n) VALUES ('9007199254740992'::DOUBLE), (1::DOUBLE), (1::DOUBLE), (0::DOUBLE);
|
||||
|
||||
# Correct result when ordered by size
|
||||
query I
|
||||
SELECT sum(n ORDER BY ABS(n))::BIGINT FROM doubles;
|
||||
----
|
||||
9007199254740994
|
||||
|
||||
# Error as an ordered aggregate
|
||||
statement error
|
||||
SELECT (sum(n) WITHIN GROUP(ORDER BY ABS(n)))::BIGINT FROM doubles;
|
||||
----
|
||||
Parser Error: Unknown ordered aggregate "sum"
|
||||
Reference in New Issue
Block a user