Files
email-tracker/external/duckdb/test/sql/aggregate/aggregates/test_stddev.test
2025-10-24 19:21:19 -05:00

152 lines
3.3 KiB
SQL

# name: test/sql/aggregate/aggregates/test_stddev.test
# description: STDDEV aggregations
# group: [aggregates]
statement ok
create table stddev_test(val integer, grp integer)
statement ok
insert into stddev_test values (42, 1), (43, 1), (42, 2), (1000, 2), (NULL, 1), (NULL, 3)
query I
SELECT stddev_samp(1)
----
NULL
query I
SELECT var_samp(1)
----
NULL
# stddev_samp
query R
select round(stddev_samp(val), 1) from stddev_test
----
478.800000
query R
select round(stddev_samp(val), 1) from stddev_test where val is not null
----
478.800000
query IRRI
select grp, sum(val), round(stddev_samp(val), 1), min(val) from stddev_test group by grp order by grp
----
1 85.000000 0.700000 42
2 1042.000000 677.400000 42
3 NULL NULL NULL
query IRRI
select grp, sum(val), round(stddev_samp(val), 1), min(val) from stddev_test where val is not null group by grp order by grp
----
1 85.000000 0.700000 42
2 1042.000000 677.400000 42
# stddev_pop
query R
select round(stddev_pop(val), 1) from stddev_test
----
414.700000
query R
select round(stddev_pop(val), 1) from stddev_test where val is not null
----
414.700000
query IRRI
select grp, sum(val), round(stddev_pop(val), 1), min(val) from stddev_test group by grp order by grp
----
1 85.000000 0.500000 42
2 1042.000000 479.000000 42
3 NULL NULL NULL
query IRRI
select grp, sum(val), round(stddev_pop(val), 1), min(val) from stddev_test where val is not null group by grp order by grp
----
1 85.000000 0.500000 42
2 1042.000000 479.000000 42
# var_samp
query R
select round(var_samp(val), 1) from stddev_test
----
229281.600000
query R
select round(variance(val), 1) from stddev_test
----
229281.600000
query R
select round(var_samp(val), 1) from stddev_test where val is not null
----
229281.600000
query IRRI
select grp, sum(val), round(var_samp(val), 1), min(val) from stddev_test group by grp order by grp
----
1 85.000000 0.500000 42
2 1042.000000 458882.000000 42
3 NULL NULL NULL
query IRRI
select grp, sum(val), round(var_samp(val), 1), min(val) from stddev_test where val is not null group by grp order by grp
----
1 85.000000 0.500000 42
2 1042.000000 458882.000000 42
# var_pop
query R
select round(var_pop(val), 1) from stddev_test
----
171961.200000
query R
select round(var_pop(val), 1) from stddev_test where val is not null
----
171961.200000
query IRRI
select grp, sum(val), round(var_pop(val), 2), min(val) from stddev_test group by grp order by grp
----
1 85.000000 0.250000 42
2 1042.000000 229441.000000 42
3 NULL NULL NULL
query IRRI
select grp, sum(val), round(var_pop(val), 2), min(val) from stddev_test where val is not null group by grp order by grp
----
1 85.000000 0.250000 42
2 1042.000000 229441.000000 42
statement ok
create table stddev_test_alias(val integer, grp integer)
statement ok
insert into stddev_test_alias values (42, 1), (43, 1), (42, 2), (1000, 2), (NULL, 1), (NULL, 3)
# stddev_samp
query R
select round(stddev(val), 1) from stddev_test_alias
----
478.800000
query I
select stddev(0) from range(10)
----
0
statement error
select stddev(a) from (values (1e301), (-1e301)) tbl(a)
----
Out of Range Error: STDDEV_SAMP is out of range
statement error
select var_samp(a) from (values (1e301), (-1e301)) tbl(a)
----
Out of Range Error: VARSAMP is out of range
statement error
select var_pop(a) from (values (1e301), (-1e301)) tbl(a)
----
Out of Range Error: VARPOP is out of range