See https://github.com/deeplook/sparklines

**Describe the solution you'd like**
```
sparkbar(width)(x, y)
sparkbar(width, min_x, max_x)(x, y)

▁▂▅▆▇▆▅
```

An aggregate function calculates a histogram of `y` by `x` and then reshapes it to `width` buckets if the histogram is larger.
Linear weighted average is used for reshaping. If multiple values correspond to a single bucket, they are also averaged.
The function returns a string.

The height of bar is proportional to the difference between `y` and the minimum value of `y` on the observed data (and then rounded to the nearest neighbor for rendering). The value of `y` can be negative but the bar height is always non negative. There are 8 different heights that can be rendered plus one additional character - whitespace that is used for absense of the value.

The boundaries for x and y can be calculated automatically or provided in parameters.

**Further info**

Similar function can use ANSI escape sequences for 24-bit color to render heatmaps.

We can encode server's memory usage during query processing directly inside the famous progress bar in clickhouse-client.
registerAggregateFunctionEntropy(factory);
        registerAggregateFunctionSimpleLinearRegression(factory);
        registerAggregateFunctionMoving(factory);
        registerAggregateFunctionCategoricalIV(factory);
        registerAggregateFunctionAggThrow(factory);
        registerAggregateFunctionRankCorrelation(factory);
        registerAggregateFunctionMannWhitney(factory);
        registerAggregateFunctionSequenceNextNode(factory);
        registerAggregateFunctionWelchTTest(factory);
        registerAggregateFunctionStudentTTest(factory);
        registerAggregateFunctionSingleValueOrNull(factory);
        registerWindowFunctions(factory);
        registerAggregateFunctionIntervalLengthSum(factory);
    }
    {
        auto & factory = AggregateFunctionCombinatorFactory::instance();
        registerAggregateFunctionCombinatorIf(factory);
        registerAggregateFunctionCombinatorArray(factory);
        registerAggregateFunctionCombinatorForEach(factory);
        registerAggregateFunctionCombinatorSimpleState(factory);
        registerAggregateFunctionCombinatorState(factory);
        registerAggregateFunctionCombinatorMerge(factory);
        registerAggregateFunctionCombinatorNull(factory);
        registerAggregateFunctionCombinatorOrFill(factory);
        registerAggregateFunctionCombinatorResample(factory);
        registerAggregateFunctionCombinatorDistinct(factory);
    }
}
}