ClickHouse/docs/en/sql-reference/aggregate-functions/reference/varsamp.md
2024-03-14 15:04:19 +01:00

3.7 KiB

title slug sidebar_position
varSamp /en/sql-reference/aggregate-functions/reference/varsamp 33

This page contains information on the varSamp and varSampStable ClickHouse functions.

varSamp

Calculate the sample variance of a data set.

Syntax

varSamp(expr)

Parameters

  • expr: An expression representing the data set for which you want to calculate the sample variance. Expression

Returned value

Returns a Float64 value representing the sample variance of the input data set.

Implementation details

The varSamp() function calculates the sample variance using the following formula:

∑(x - mean(x))^2 / (n - 1)

Where:

  • x is each individual data point in the data set.
  • mean(x) is the arithmetic mean of the data set.
  • n is the number of data points in the data set.

The function assumes that the input data set represents a sample from a larger population. If you want to calculate the variance of the entire population (when you have the complete data set), you should use the varPop() function instead.

This function uses a numerically unstable algorithm. If you need numerical stability in calculations, use the slower but more stable varSampStable function.

Example

Query:

CREATE TABLE example_table
(
    id UInt64,
    value Float64
)
ENGINE = MergeTree
ORDER BY id;

INSERT INTO example_table VALUES (1, 10.5), (2, 12.3), (3, 9.8), (4, 11.2), (5, 10.7);

SELECT varSamp(value) FROM example_table;

Response:

0.8650000000000091

varSampStable

Calculate the sample variance of a data set using a numerically stable algorithm.

Syntax

varSampStable(expr)

Parameters

  • expr: An expression representing the data set for which you want to calculate the sample variance. Expression

Returned value

The varSampStable() function returns a Float64 value representing the sample variance of the input data set.

Implementation details

The varSampStable() function calculates the sample variance using the same formula as the [varSamp()](#varSamp function):

∑(x - mean(x))^2 / (n - 1)

Where:

  • x is each individual data point in the data set.
  • mean(x) is the arithmetic mean of the data set.
  • n is the number of data points in the data set.

The difference between varSampStable() and varSamp() is that varSampStable() is designed to provide a more deterministic and stable result when dealing with floating-point arithmetic. It uses an algorithm that minimizes the accumulation of rounding errors, which can be particularly important when dealing with large data sets or data with a wide range of values.

Like varSamp(), the varSampStable() function assumes that the input data set represents a sample from a larger population. If you want to calculate the variance of the entire population (when you have the complete data set), you should use the varPopStable() function instead.

Example

Query:

CREATE TABLE example_table
(
    id UInt64,
    value Float64
)
ENGINE = MergeTree
ORDER BY id;

INSERT INTO example_table VALUES (1, 10.5), (2, 12.3), (3, 9.8), (4, 11.2), (5, 10.7);

SELECT varSampStable(value) FROM example_table;

Response:

0.865

This query calculates the sample variance of the value column in the example_table using the varSampStable() function. The result shows that the sample variance of the values [10.5, 12.3, 9.8, 11.2, 10.7] is approximately 0.865, which may differ slightly from the result of varSamp() due to the more precise handling of floating-point arithmetic.