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 116 117
|
# name: test/sql/function/list/aggregates/bigints_sum_avg.test
# description: Test list_sum and list_avg with bigints
# group: [aggregates]
statement ok
CREATE TABLE bigints (i BIGINT[]);
statement ok
INSERT INTO bigints VALUES ([1, 2, 3]);
# sum
query I
SELECT list_sum(i) FROM bigints;
----
6
# avg
query I
SELECT list_avg(i) FROM bigints;
----
2
statement ok
DELETE FROM bigints;
# sum no longer fits in int64
statement ok
INSERT INTO bigints VALUES ([1, 2, 3, 9223372036854775806]);
# sum
query I
SELECT list_sum(i) FROM bigints;
----
9223372036854775812
# avg
query I
SELECT list_avg(i) FROM bigints;
----
2305843009213693952
statement ok
DELETE FROM bigints;
statement ok
INSERT INTO bigints VALUES ([-1, -2, -3]);
# sum
query I
SELECT list_sum(i) FROM bigints;
----
-6
# avg
query I
SELECT list_avg(i) FROM bigints;
----
-2
statement ok
DELETE FROM bigints;
# sum no longer fits in int64 [negative]
statement ok
INSERT INTO bigints VALUES ([-1, -2, -3, -9223372036854775806]);
# sum
query I
SELECT list_sum(i) FROM bigints;
----
-9223372036854775812
# avg
query I
SELECT list_avg(i) FROM bigints;
----
-2305843009213693952
# now with decimals
statement ok
CREATE TABLE decimals (i DECIMAL(18,1)[]);
statement ok
INSERT INTO decimals VALUES ([1, 2, 3]);
# sum
query I
SELECT list_sum(i) FROM decimals;
----
6.0
# avg
query I
SELECT list_avg(i) FROM decimals;
----
2.0
statement ok
DELETE FROM decimals;
# sum no longer fits in int64
statement ok
INSERT INTO decimals VALUES ([99999999999999999.9, 99999999999999999.9, 99999999999999999.9,
99999999999999999.9, 99999999999999999.9, 99999999999999999.9, 99999999999999999.9,
99999999999999999.9, 99999999999999999.9, 99999999999999999.9, 1.0, 2.0, 3.0]);
# sum
query I
SELECT list_sum(i) FROM decimals;
----
1000000000000000005.0
query I
SELECT list_avg(i) FROM decimals;
----
76923076923076923
|