# quantileExactWeighted

Exactly computes the quantile of a numeric data sequence, taking into account the weight of each element.

To get exact value, all the passed values ​​are combined into an array, which is then partially sorted. Each value is counted with its weight, as if it is present `weight` times. A hash table is used in the algorithm. Because of this, if the passed values ​​are frequently repeated, the function consumes less RAM than quantileExact. You can use this function instead of `quantileExact` and specify the weight 1.

When using multiple `quantile*` functions with different levels in a query, the internal states are not combined (that is, the query works less efficiently than it could). In this case, use the quantiles function.

Syntax

``````quantileExactWeighted(level)(expr, weight)
``````

Alias: `medianExactWeighted`.

Parameters

• `level` — Level of quantile. Optional parameter. Constant floating-point number from 0 to 1. We recommend using a `level` value in the range of `[0.01, 0.99]`. Default value: 0.5. At `level=0.5` the function calculates median.
• `expr` — Expression over the column values resulting in numeric data types, Date or DateTime.
• `weight` — Column with weights of sequence members. Weight is a number of value occurrences.

Returned value

• Quantile of the specified level.

Type:

• Float64 for numeric data type input.
• Date if input values have the `Date` type.
• DateTime if input values have the `DateTime` type.

Example

Input table:

``````┌─n─┬─val─┐
│ 0 │   3 │
│ 1 │   2 │
│ 2 │   1 │
│ 5 │   4 │
└───┴─────┘
``````

Query:

``````SELECT quantileExactWeighted(n, val) FROM t
``````

Result:

``````┌─quantileExactWeighted(n, val)─┐
│                             1 │
└───────────────────────────────┘
``````