> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kinetica.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Math Functions

<a id="sql-math-functions" />

## Scalar Functions

<AccordionGroup>
  <Accordion title="ABS(expr)" id="abs-expr" defaultOpen>
    Calculates the absolute value of `expr`
  </Accordion>

  <Accordion title="ACOS(expr)" id="acos-expr" defaultOpen>
    Returns the inverse cosine (arccosine) of `expr` as a *double*
  </Accordion>

  <Accordion title="ACOSF(expr)" id="acosf-expr" defaultOpen>
    Returns the inverse cosine (arccosine) of `expr` as a *float*
  </Accordion>

  <Accordion title="ACOSH(expr)" id="acosh-expr" defaultOpen>
    Returns the inverse hyperbolic cosine of `expr` as a *double*
  </Accordion>

  <Accordion title="ACOSHF(expr)" id="acoshf-expr" defaultOpen>
    Returns the inverse hyperbolic cosine of `expr` as a *float*
  </Accordion>

  <Accordion title="ASIN(expr)" id="asin-expr" defaultOpen>
    Returns the inverse sine (arcsine) of `expr` as a *double*
  </Accordion>

  <Accordion title="ASINF(expr)" id="asinf-expr" defaultOpen>
    Returns the inverse sine (arcsine) of `expr` as a *float*
  </Accordion>

  <Accordion title="ASINH(expr)" id="asinh-expr" defaultOpen>
    Returns the inverse hyperbolic sine of `expr` as a *double*
  </Accordion>

  <Accordion title="ASINHF(expr)" id="asinhf-expr" defaultOpen>
    Returns the inverse hyperbolic sine of `expr` as a *float*
  </Accordion>

  <Accordion title="ATAN(expr)" id="atan-expr" defaultOpen>
    Returns the inverse tangent (arctangent) of `expr` as a *double*
  </Accordion>

  <Accordion title="ATANF(expr)" id="atanf-expr" defaultOpen>
    Returns the inverse tangent (arctangent) of `expr` as a *float*
  </Accordion>

  <Accordion title="ATANH(expr)" id="atanh-expr" defaultOpen>
    Returns the inverse hyperbolic tangent of `expr` as a *double*
  </Accordion>

  <Accordion title="ATANHF(expr)" id="atanhf-expr" defaultOpen>
    Returns the inverse hyperbolic tangent of `expr` as a *float*
  </Accordion>

  <Accordion title="ATAN2(x, y)" id="atan2-x-y" defaultOpen>
    Returns the inverse tangent (arctangent) using two arguments as a *double*
  </Accordion>

  <Accordion title="ATAN2F(x, y)" id="atan2f-x-y" defaultOpen>
    Returns the inverse tangent (arctangent) using two arguments as a *float*
  </Accordion>

  <Accordion title="ATN2(x, y)" id="atn2-x-y" defaultOpen>
    Alias for `ATAN2`
  </Accordion>

  <Accordion title="ATN2F(x, y)" id="atn2f-x-y" defaultOpen>
    Alias for `ATAN2F`
  </Accordion>

  <Accordion title="CBRT(expr)" id="cbrt-expr" defaultOpen>
    Returns the cube root of `expr` as a *double*
  </Accordion>

  <Accordion title="CBRTF(expr)" id="cbrtf-expr" defaultOpen>
    Returns the cube root of `expr` as a *float*
  </Accordion>

  <Accordion title="CEIL(expr)" id="ceil-expr" defaultOpen>
    Alias for `CEILING`
  </Accordion>

  <Accordion title="CEILING(expr)" id="ceiling-expr" defaultOpen>
    Rounds `expr` up to the next highest integer
  </Accordion>

  <Accordion title="COS(expr)" id="cos-expr" defaultOpen>
    Returns the cosine of `expr` as a *double*
  </Accordion>

  <Accordion title="COSF(expr)" id="cosf-expr" defaultOpen>
    Returns the cosine of `expr` as a *float*
  </Accordion>

  <Accordion title="COSH(expr)" id="cosh-expr" defaultOpen>
    Returns the hyperbolic cosine of `expr` as a *double*
  </Accordion>

  <Accordion title="COSHF(expr)" id="coshf-expr" defaultOpen>
    Returns the hyperbolic cosine of `expr` as a *float*
  </Accordion>

  <Accordion title="COT(expr)" id="cot-expr" defaultOpen>
    Returns the cotangent of `expr` as a *double*
  </Accordion>

  <Accordion title="COTF(expr)" id="cotf-expr" defaultOpen>
    Returns the cotangent of `expr` as a *float*
  </Accordion>

  <Accordion title="DEGREES(expr)" id="degrees-expr" defaultOpen>
    Returns the conversion of `expr` (in radians) to degrees as a *double*
  </Accordion>

  <Accordion title="DEGREESF(expr)" id="degreesf-expr" defaultOpen>
    Returns the conversion of `expr` (in radians) to degrees as a *float*
  </Accordion>

  <Accordion title="DIVZ(a, b, c)" id="divz-a-b-c" defaultOpen>
    Returns the quotient `a / b` unless `b == 0`, in which case it returns `c`
  </Accordion>

  <Accordion title="EXP(expr)" id="exp-expr" defaultOpen>
    Returns *e* to the power of `expr` as a *double*
  </Accordion>

  <Accordion title="EXPF(expr)" id="expf-expr" defaultOpen>
    Returns *e* to the power of `expr` as a *float*
  </Accordion>

  <Accordion title="FLOOR(expr)" id="floor-expr" defaultOpen>
    Rounds `expr` down to the next lowest integer
  </Accordion>

  <Accordion title="GREATER(expr_a, expr_b)" id="greater-expr_a-expr_b" defaultOpen>
    Returns whichever of `expr_a` and `expr_b` has the larger value, based on typed
    comparison
  </Accordion>

  <Accordion title="HYPOT(x, y)" id="hypot-x-y" defaultOpen>
    Returns the hypotenuse of `x` and `y` as a *double*
  </Accordion>

  <Accordion title="HYPOTF(x, y)" id="hypotf-x-y" defaultOpen>
    Returns the hypotenuse of `x` and `y` as a *float*
  </Accordion>

  <Accordion title="IFERROR(expr, val)" id="iferror-expr-val" defaultOpen>
    Alias for `IF_ERROR(expr, val)`
  </Accordion>

  <Accordion title="IFINF(expr, val)" id="ifinf-expr-val" defaultOpen>
    Alias for `IF_INF(expr, val)`
  </Accordion>

  <Accordion title="IFINFINITY(expr, val)" id="ifinfinity-expr-val" defaultOpen>
    Alias for `IF_INF(expr, val)`
  </Accordion>

  <Accordion title="IFNAN(expr, val)" id="ifnan-expr-val" defaultOpen>
    Alias for `IF_NAN(expr, val)`
  </Accordion>

  <Accordion title="IF_ERROR(expr, val)" id="if_error-expr-val" defaultOpen>
    Evaluates the given *double* or *float* `expr`, and if it resolves to infinity or
    `NaN`, return `val`

    <Tip>
      Conceptually, this function is the same as
      `IF_INF(IF_NAN(expr, val), val)`
    </Tip>

    Example:

    <div>
      <table class="table w-full [&_td]:min-w-[150px] [&_th]:text-left [&_td[data-numeric]]:tabular-nums">
        <thead>
          <tr>
            <th>Function Call</th>
            <th>Result</th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <td><code>IF\_ERROR((double(10)/0), 1)</code></td>
            <td><code>1.0</code></td>
          </tr>

          <tr>
            <td><code>IF\_ERROR(log(-1), 1)</code></td>
            <td><code>1.0</code></td>
          </tr>
        </tbody>
      </table>
    </div>
  </Accordion>

  <Accordion title="IF_INF(expr, val)" id="if_inf-expr-val" defaultOpen>
    Evaluates the given *double* or *float* `expr`, and if it resolves to infinity,
    return `val`

    Example:

    <div>
      <table class="table w-full [&_td]:min-w-[150px] [&_th]:text-left [&_td[data-numeric]]:tabular-nums">
        <thead>
          <tr>
            <th>Function Call</th>
            <th>Result</th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <td><code>IF\_INF((double(10)/0), 999)</code></td>
            <td><code>999.0</code></td>
          </tr>

          <tr>
            <td><code>IF\_INF(log(-1), 999)</code></td>
            <td><code>NaN</code></td>
          </tr>
        </tbody>
      </table>
    </div>
  </Accordion>

  <Accordion title="IF_INFINITY(expr, val)" id="if_infinity-expr-val" defaultOpen>
    Alias for `IF_INF(expr, val)`
  </Accordion>

  <Accordion title="IF_NAN(expr, val)" id="if_nan-expr-val" defaultOpen>
    Evaluates the given *double* or *float* `expr`, and if it resolves to `NaN`,
    return `val`

    Example:

    <div>
      <table class="table w-full [&_td]:min-w-[150px] [&_th]:text-left [&_td[data-numeric]]:tabular-nums">
        <thead>
          <tr>
            <th>Function Call</th>
            <th>Result</th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <td><code>IF\_NAN((double(10)/0), -1)</code></td>
            <td><code>Infinity</code></td>
          </tr>

          <tr>
            <td><code>IF\_NAN(log(-1), -1)</code></td>
            <td><code>-1.0</code></td>
          </tr>
        </tbody>
      </table>
    </div>
  </Accordion>

  <Accordion title="ISINFINITY(expr)" id="isinfinity-expr" defaultOpen>
    Returns `1` (true) if `expr` is infinity by IEEE standard; otherwise, returns
    `0` (false)
  </Accordion>

  <Accordion title="IS_INFINITY(expr)" id="is_infinity-expr" defaultOpen>
    Alias for `ISINFINITY`
  </Accordion>

  <Accordion title="ISNAN(expr)" id="isnan-expr" defaultOpen>
    Returns `1` (true) if `expr` is not a number by IEEE standard; otherwise, returns
    `0` (false)
  </Accordion>

  <Accordion title="IS_NAN(expr)" id="is_nan-expr" defaultOpen>
    Alias for `ISNAN`
  </Accordion>

  <Accordion title="ISNUMERIC(expr)" id="isnumeric-expr" defaultOpen>
    Returns `1` (true) if `expr` is a number by IEEE standard; otherwise, returns
    `0` (false)
  </Accordion>

  <Accordion title="IS_NUMERIC(expr)" id="is_numeric-expr" defaultOpen>
    Alias for `ISNUMERIC`
  </Accordion>

  <Accordion title="LDEXP(x, exp)" id="ldexp-x-exp" defaultOpen>
    Returns the value of `x` \* 2<sup>exp</sup> as a *double*
  </Accordion>

  <Accordion title="LDEXPF(x, exp)" id="ldexpf-x-exp" defaultOpen>
    Returns the value of `x` \* 2<sup>exp</sup> as a *float*
  </Accordion>

  <Accordion title="LESSER(expr_a, expr_b)" id="lesser-expr_a-expr_b" defaultOpen>
    Returns whichever of `expr_a` and `expr_b` has the smaller value, based on typed
    comparison
  </Accordion>

  <Accordion title="LN(expr)" id="ln-expr" defaultOpen>
    Returns the natural logarithm of `expr` as a *double*
  </Accordion>

  <Accordion title="LNF(expr)" id="lnf-expr" defaultOpen>
    Returns the natural logarithm of `expr` as a *float*
  </Accordion>

  <Accordion title="LOG(expr)" id="log-expr" defaultOpen>
    Alias for `LN`
  </Accordion>

  <Accordion title="LOG10(expr)" id="log10-expr" defaultOpen>
    Returns the *base-10* logarithm of `expr` as a *double*
  </Accordion>

  <Accordion title="LOG10F(expr)" id="log10f-expr" defaultOpen>
    Returns the *base-10* logarithm of `expr` as a *float*
  </Accordion>

  <Accordion title="LOG1P(expr)" id="log1p-expr" defaultOpen>
    Returns the natural logarithm of one plus `expr` as a *double*
  </Accordion>

  <Accordion title="LOG1PF(expr)" id="log1pf-expr" defaultOpen>
    Returns the natural logarithm of one plus `expr` as a *float*
  </Accordion>

  <Accordion title="LOG2(expr)" id="log2-expr" defaultOpen>
    Returns the binary (*base-2*) logarithm of `expr` as a *double*
  </Accordion>

  <Accordion title="LOG2F(expr)" id="log2f-expr" defaultOpen>
    Returns the binary (*base-2*) logarithm of `expr` as a *float*
  </Accordion>

  <Accordion title="LOGF(expr)" id="logf-expr" defaultOpen>
    Alias for `LNF`
  </Accordion>

  <Accordion title="MAX_CONSECUTIVE_BITS(expr)" id="max_consecutive_bits-expr" defaultOpen>
    Calculates the length of the longest series of consecutive `1` bits in the integer
    `expr`
  </Accordion>

  <Accordion title="MOD(dividend, divisor)" id="mod-dividend-divisor" defaultOpen>
    Calculates the remainder after integer division of `dividend` by `divisor`
  </Accordion>

  <Accordion title="NEXT_AFTER(expr[, target])" id="next_after-expr-target" defaultOpen>
    Returns the next representable floating-point value adjacent to
    `expr` in the direction of `target`, incrementing `expr`
    if `target` is greater, decrementing if lesser.  The default
    value of `target` is `MAX_DOUBLE` (always increments when
    omitted).  The return type matches the input (*float* or *double*).
  </Accordion>

  <Accordion title="NEXT_BEFORE(expr)" id="next_before-expr" defaultOpen>
    Returns the next representable floating-point value less than
    `expr`.  The return type matches the input (*float* or *double*).
  </Accordion>

  <Accordion title="PI()" id="pi" defaultOpen>
    Returns the value of *pi*
  </Accordion>

  <Accordion title="POW(base, exponent)" id="pow-base-exponent" defaultOpen>
    Alias for `POWER`
  </Accordion>

  <Accordion title="POWF(base, exponent)" id="powf-base-exponent" defaultOpen>
    Alias for `POWERF`
  </Accordion>

  <Accordion title="POWER(base, exponent)" id="power-base-exponent" defaultOpen>
    Returns `base` raised to the power of `exponent` as a *double*
  </Accordion>

  <Accordion title="POWERF(base, exponent)" id="powerf-base-exponent" defaultOpen>
    Returns `base` raised to the power of `exponent` as a *float*
  </Accordion>

  <Accordion title="RADIANS(expr)" id="radians-expr" defaultOpen>
    Returns the conversion of `expr` (in degrees) to radians as a *double*
  </Accordion>

  <Accordion title="RADIANSF(expr)" id="radiansf-expr" defaultOpen>
    Returns the conversion of `expr` (in degrees) to radians as a *float*
  </Accordion>

  <Accordion title="RAND([seed])" id="rand-seed" defaultOpen>
    Returns a random floating-point value, with an optional `seed`
  </Accordion>

  <Accordion title="REGR_VALX(y, x)" id="regr_valx-y-x" defaultOpen>
    Returns NULL if `y` is NULL; otherwise, returns `x`
  </Accordion>

  <Accordion title="REGR_VALY(y, x)" id="regr_valy-y-x" defaultOpen>
    Returns NULL if `x` is NULL; otherwise, returns `y`
  </Accordion>

  <Accordion title="ROUND(expr[, scale])" id="round-expr-scale" defaultOpen>
    Rounds `expr` to the nearest decimal number with `scale`
    decimal places when `scale` is a positive number; rounds to
    the nearest number such that the result has `-(scale)` zeros
    to the left of the decimal point when `scale` is negative; use
    `scale` of `0` to round to the nearest integer.

    The default value of `scale` is `0`.

    Examples:

    <div>
      <table class="table w-full [&_td]:min-w-[150px] [&_th]:text-left [&_td[data-numeric]]:tabular-nums">
        <thead>
          <tr>
            <th>Function Call</th>
            <th>Result</th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <td><code>ROUND(12345.678)</code></td>
            <td><code>12346</code></td>
          </tr>

          <tr>
            <td><code>ROUND(12345.678, 2)</code></td>
            <td><code>12345.68</code></td>
          </tr>

          <tr>
            <td><code>ROUND(12345.678, 0)</code></td>
            <td><code>12346</code></td>
          </tr>

          <tr>
            <td><code>ROUND(12345.678, -2)</code></td>
            <td><code>12300</code></td>
          </tr>
        </tbody>
      </table>
    </div>
  </Accordion>

  <Accordion title="SAFE_DIVIDE(a, b)" id="safe_divide-a-b" defaultOpen>
    Returns the quotient `a / b` unless `b == 0`, in which case it returns `NULL`
  </Accordion>

  <Accordion title="SIGN(expr)" id="sign-expr" defaultOpen>
    Determines whether a number is positive, negative, or zero;
    returns one of the following three values:

    <div>
      <table class="table w-full [&_td]:min-w-[150px] [&_th]:text-left [&_td[data-numeric]]:tabular-nums">
        <thead>
          <tr>
            <th>Expression Value</th>
            <th>Result</th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <td>*positive*</td>
            <td><code>1</code></td>
          </tr>

          <tr>
            <td>*zero*</td>
            <td><code>0</code></td>
          </tr>

          <tr>
            <td>*negative*</td>
            <td><code>-1</code></td>
          </tr>
        </tbody>
      </table>
    </div>
  </Accordion>

  <Accordion title="SIN(expr)" id="sin-expr" defaultOpen>
    Returns the sine of `expr` as a *double*
  </Accordion>

  <Accordion title="SINF(expr)" id="sinf-expr" defaultOpen>
    Returns the sine of `expr` as a *float*
  </Accordion>

  <Accordion title="SINH(expr)" id="sinh-expr" defaultOpen>
    Returns the hyperbolic sine of `expr` as a *double*
  </Accordion>

  <Accordion title="SINHF(expr)" id="sinhf-expr" defaultOpen>
    Returns the hyperbolic sine of `expr` as a *float*
  </Accordion>

  <Accordion title="SQRT(expr)" id="sqrt-expr" defaultOpen>
    Returns the square root of `expr` as a *double*
  </Accordion>

  <Accordion title="SQRTF(expr)" id="sqrtf-expr" defaultOpen>
    Returns the square root of `expr` as a *float*
  </Accordion>

  <Accordion title="TAN(expr)" id="tan-expr" defaultOpen>
    Returns the tangent of `expr` as a *double*
  </Accordion>

  <Accordion title="TANF(expr)" id="tanf-expr" defaultOpen>
    Returns the tangent of `expr` as a *float*
  </Accordion>

  <Accordion title="TANH(expr)" id="tanh-expr" defaultOpen>
    Returns the hyperbolic tangent of `expr` as a *double*
  </Accordion>

  <Accordion title="TANHF(expr)" id="tanhf-expr" defaultOpen>
    Returns the hyperbolic tangent of `expr` as a *float*
  </Accordion>

  <Accordion title="TRUNCATE(expr[, scale])" id="truncate-expr-scale" defaultOpen>
    Rounds `expr` down to the nearest decimal number with
    `scale` decimal places when `scale` is a positive number;
    rounds down to the nearest number such that the result has
    `-(scale)` zeros to the left of the decimal point when
    `scale` is negative; use `scale` of `0` to round down to
    the nearest integer.

    The default value of `scale` is `0`.

    Examples:

    <div>
      <table class="table w-full [&_td]:min-w-[150px] [&_th]:text-left [&_td[data-numeric]]:tabular-nums">
        <thead>
          <tr>
            <th>Function Call</th>
            <th>Result</th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <td><code>TRUNCATE(12345.678)</code></td>
            <td><code>12345</code></td>
          </tr>

          <tr>
            <td><code>TRUNCATE(12345.678, 2)</code></td>
            <td><code>12345.67</code></td>
          </tr>

          <tr>
            <td><code>TRUNCATE(12345.678, 0)</code></td>
            <td><code>12345</code></td>
          </tr>

          <tr>
            <td><code>TRUNCATE(12345.678, -2)</code></td>
            <td><code>12300</code></td>
          </tr>
        </tbody>
      </table>
    </div>
  </Accordion>

  <Accordion title="WIDTH_BUCKET(expr, min, max, count)" id="width_bucket-expr-min-max-count" defaultOpen>
    Defines a set of `count` equal intervals (buckets) within the range of `min` &
    `max`, and puts the value of `expr` into one of those buckets, where the value is
    greater than or equal to the minimum value of the bucket and less than the maximum
    value of the bucket.  Returns the 1-based number of the bucket into which the value
    of `expr` fell.  For values smaller than `min`, `0` is returned; for values
    greater than or equal to `max`, `count + 1` is returned.  Examples:

    In the following examples, a set of *5* equal buckets are defined between *0* and
    *10* (*0-2*, *2-4*, *4-6*, *6-8*, & *8-10*), and various values are bucketed using
    that set.

    <div>
      <table class="table w-full [&_td]:min-w-[150px] [&_th]:text-left [&_td[data-numeric]]:tabular-nums">
        <thead>
          <tr>
            <th>Function Call</th>
            <th>Result</th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <td><code>WIDTH\_BUCKET(-1, 0, 10, 5)</code></td>
            <td><code>0</code></td>
          </tr>

          <tr>
            <td><code>WIDTH\_BUCKET(0, 0, 10, 5)</code></td>
            <td><code>1</code></td>
          </tr>

          <tr>
            <td><code>WIDTH\_BUCKET(5, 0, 10, 5)</code></td>
            <td><code>3</code></td>
          </tr>

          <tr>
            <td><code>WIDTH\_BUCKET(10, 0, 10, 5)</code></td>
            <td><code>6</code></td>
          </tr>

          <tr>
            <td><code>WIDTH\_BUCKET(11, 0, 10, 5)</code></td>
            <td><code>6</code></td>
          </tr>
        </tbody>
      </table>
    </div>
  </Accordion>
</AccordionGroup>

<a id="sql-math-functions-agg" />

## Aggregate Functions

<AccordionGroup>
  <Accordion title="APPROX_COUNT_DISTINCT(expr)" id="approx_count_distinct-expr" defaultOpen>
    The approximate number of distinct values of `expr`; this is faster to calculate than `COUNT_DISTINCT` but is only an approximation
  </Accordion>

  <Accordion title="APPROX_MEDIAN(expr)" id="approx_median-expr" defaultOpen>
    The approximate median of `expr`; the result should be within about *2%* of the true median value. This is equivalent to issuing
    `APPROX_PERCENTILE(expr, 50)`.
  </Accordion>

  <Accordion title="APPROX_PERCENTILE(expr, p)" id="approx_percentile-expr-p" defaultOpen>
    The approximate *pth* percentile of `expr`; `p` should be a value between *0.0* and *100.0*. `APPROX_PERCENTILE(expr, 50)` will return
    the approximate median of `expr`.
  </Accordion>

  <Accordion title="AVG(expr)" id="avg-expr" defaultOpen>
    Average of the values of `expr`
  </Accordion>

  <Accordion title="CORR(expr1, expr2)" id="corr-expr1-expr2" defaultOpen>
    Correlation coefficient of the values of `expr1` and `expr2`
  </Accordion>

  <Accordion title="CORRELATION(expr1, expr2)" id="correlation-expr1-expr2" defaultOpen>
    Alias for `CORR`
  </Accordion>

  <Accordion title="CORRCOEF(expr1, expr2)" id="corrcoef-expr1-expr2" defaultOpen>
    Alias for `CORR`
  </Accordion>

  <Accordion title="COUNT(expr)" id="count-expr" defaultOpen>
    Count of non-null values of `expr`; use `*` to count all values within an aggregation group or over an entire table
  </Accordion>

  <Accordion title="COUNT_DISTINCT(expr)" id="count_distinct-expr" defaultOpen>
    Count of the distinct values of `expr`
  </Accordion>

  <Accordion title="COV(expr1, expr2)" id="cov-expr1-expr2" defaultOpen>
    Alias for `COVAR_POP`
  </Accordion>

  <Accordion title="COVAR(expr1, expr2)" id="covar-expr1-expr2" defaultOpen>
    Alias for `COVAR_POP`
  </Accordion>

  <Accordion title="COVARIANCE(expr1, expr2)" id="covariance-expr1-expr2" defaultOpen>
    Alias for `COVAR_POP`
  </Accordion>

  <Accordion title="COVAR_POP(expr1, expr2)" id="covar_pop-expr1-expr2" defaultOpen>
    Population covariance of the values of `expr1` and `expr2`
  </Accordion>

  <Accordion title="COVAR_SAMP(expr1, expr2)" id="covar_samp-expr1-expr2" defaultOpen>
    Sample covariance of the values of `expr1` and `expr2`
  </Accordion>

  <Accordion title="KURT(expr)" id="kurt-expr" defaultOpen>
    Alias for `KURTOSIS_POP`
  </Accordion>

  <Accordion title="KURTOSIS(expr)" id="kurtosis-expr" defaultOpen>
    Alias for `KURTOSIS_POP`
  </Accordion>

  <Accordion title="KURTOSIS_POP(expr)" id="kurtosis_pop-expr" defaultOpen>
    Population kurtosis of the values of `expr`
  </Accordion>

  <Accordion title="KURTOSIS_SAMP(expr)" id="kurtosis_samp-expr" defaultOpen>
    Sample kurtosis of the values of `expr`
  </Accordion>

  <Accordion title="KURT_POP(expr)" id="kurt_pop-expr" defaultOpen>
    Alias for `KURTOSIS_POP`
  </Accordion>

  <Accordion title="KURT_SAMP(expr)" id="kurt_samp-expr" defaultOpen>
    Alias for `KURTOSIS_SAMP`
  </Accordion>

  <Accordion title="MAX(expr)" id="max-expr" defaultOpen>
    Maximum of the values of `expr`
  </Accordion>

  <Accordion title="MEAN(expr)" id="mean-expr" defaultOpen>
    Alias for `AVG`
  </Accordion>

  <Accordion title="MIN(expr)" id="min-expr" defaultOpen>
    Minimum of the values of `expr`
  </Accordion>

  <Accordion title="PRODUCT(expr)" id="product-expr" defaultOpen>
    Product of the values of `expr`
  </Accordion>

  <Accordion title="REGR_AVGX(y, x)" id="regr_avgx-y-x" defaultOpen>
    Average of the independent variable (`SUM(x)/N`) of the line determined by computing a least-squares-fit linear regression over the given (X, Y)
    pairs
  </Accordion>

  <Accordion title="REGR_AVGY(y, x)" id="regr_avgy-y-x" defaultOpen>
    Average of the dependent variable (`SUM(y)/N`) of the line determined by computing a least-squares-fit linear regression over the given (X, Y)
    pairs
  </Accordion>

  <Accordion title="REGR_COUNT(y, x)" id="regr_count-y-x" defaultOpen>
    Number of input rows used in computing a linear regression, where both expressions are non-null
  </Accordion>

  <Accordion title="REGR_INTERCEPT(y, x)" id="regr_intercept-y-x" defaultOpen>
    Y-intercept of the line determined by computing a least-squares-fit linear regression over the given (X, Y) pairs
  </Accordion>

  <Accordion title="REGR_R2(y, x)" id="regr_r2-y-x" defaultOpen>
    Square of the correlation coefficient, marking how well the least-squares-fit linear regression fit the data set
  </Accordion>

  <Accordion title="REGR_SLOPE(y, x)" id="regr_slope-y-x" defaultOpen>
    Slope of the line determined by computing a least-squares-fit linear regression over the given (X, Y) pairs
  </Accordion>

  <Accordion title="REGR_SXX(y, x)" id="regr_sxx-y-x" defaultOpen>
    "Sum of squares" of the independent variable (`SUM(x^2) - SUM(x)^2/N`) of the line determined by computing a least-squares-fit linear regression
    over the given (X, Y) pairs
  </Accordion>

  <Accordion title="REGR_SXY(y, x)" id="regr_sxy-y-x" defaultOpen>
    "Sum of Products" of independent variable times dependent variable (`SUM(x * y) - SUM(x) * SUM(y)/N`) of the line determined by computing a
    least-squares-fit linear regression over the given (X, Y) pairs
  </Accordion>

  <Accordion title="REGR_SYY(y, x)" id="regr_syy-y-x" defaultOpen>
    "Sum of squares" of the dependent variable (`SUM(y^2) - SUM(y)^2/N`) of the line determined by computing a least-squares-fit linear regression
    over the given (X, Y) pairs
  </Accordion>

  <Accordion title="SKEW(expr)" id="skew-expr" defaultOpen>
    Alias for `SKEWNESS_POP`
  </Accordion>

  <Accordion title="SKEWNESS(expr)" id="skewness-expr" defaultOpen>
    Alias for `SKEWNESS_POP`
  </Accordion>

  <Accordion title="SKEWNESS_POP(expr)" id="skewness_pop-expr" defaultOpen>
    Population skew of the values of `expr`
  </Accordion>

  <Accordion title="SKEWNESS_SAMP(expr)" id="skewness_samp-expr" defaultOpen>
    Sample skew of the values of `expr`
  </Accordion>

  <Accordion title="SKEW_POP(expr)" id="skew_pop-expr" defaultOpen>
    Alias for `SKEWNESS_POP`
  </Accordion>

  <Accordion title="SKEW_SAMP(expr)" id="skew_samp-expr" defaultOpen>
    Alias for `SKEWNESS_SAMP`
  </Accordion>

  <Accordion title="STDDEV(expr)" id="stddev-expr" defaultOpen>
    Population standard deviation over values of `expr` (i.e. the denominator is *N*)
  </Accordion>

  <Accordion title="STDDEV_POP(expr)" id="stddev_pop-expr" defaultOpen>
    Population standard deviation over values of `expr` (i.e. the denominator is *N*)
  </Accordion>

  <Accordion title="STDDEV_SAMP(expr)" id="stddev_samp-expr" defaultOpen>
    Sample standard deviation over values of `expr` (i.e. the denominator is *N-1*)
  </Accordion>

  <Accordion title="SUM(expr)" id="sum-expr" defaultOpen>
    Sum of the values of `expr`
  </Accordion>

  <Accordion title="VAR(expr)" id="var-expr" defaultOpen>
    Population variance over values of `expr` (i.e. the denominator is *N*)
  </Accordion>

  <Accordion title="VAR_POP(expr)" id="var_pop-expr" defaultOpen>
    Population variance over values of `expr` (i.e. the denominator is *N*)
  </Accordion>

  <Accordion title="VAR_SAMP(expr)" id="var_samp-expr" defaultOpen>
    Sample variance over values of `expr` (i.e. the denominator is *N-1*)
  </Accordion>

  <Accordion title="VARIANCE(expr)" id="variance-expr" defaultOpen>
    Alias for `VAR`
  </Accordion>

  <Accordion title="VARIANCE_POP(expr)" id="variance_pop-expr" defaultOpen>
    Alias for `VAR_POP`
  </Accordion>

  <Accordion title="VARIANCE_SAMP(expr)" id="variance_samp-expr" defaultOpen>
    Alias for `VAR_SAMP`
  </Accordion>
</AccordionGroup>
