**Describe the bug**
Performing `sumMap` function with decimal values does not sum properly. looks like an overflow.

**Does it reproduce on recent release?**
[The list of releases](https://github.com/ClickHouse/ClickHouse/blob/master/utils/list-versions/version_date.tsv)
Yes. tried on latest `21.1.2.15` as well as `20.12.4.5`

**How to reproduce**
```sql
CREATE TABLE sum_map(
    statusMap Nested(
        goal_id UInt16,
        revenue Decimal32(5)
    )
) ENGINE = Log;

INSERT INTO sum_map VALUES
    ([1, 2, 3], [10.5, 10.5, 10.5]),
    ([3, 4, 5], [10.5, 10.5, 10.5]),
    ([4, 5, 6], [10.5, 10.5, 10.5]),
    ([6, 7, 8], [10.5, 10.5, 10.5]);

SELECT
    sumMap(statusMap.goal_id, statusMap.revenue)
FROM sum_map;
```

**Expected behavior**
The decimal values in the nested revenue column should be summed properly. The select above leads to:
```
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| sumMap(statusMap.goal_id, statusMap.revenue)                                                                                                                                                                                                                                                                                    |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ([1,2,3,4,5,6,7,8],[1521106780904990803940045903404371.81840,-305731560536066622954267316264999.30736,25802410697087604800041730231.52928,25802360332470575101123994625.01152,25802360332494186933538342851.08000,25802360332517798765952691077.14848,25802360332694887509060302762.16208,25802360332742111173888999214.29904]) |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
```

**note** when writing this issue I accidentally [submitted pre-maturely](https://github.com/ClickHouse/ClickHouse/issues/19380) and closed that one.
const DataTypes & values_types_, const DataTypes & argument_types_,
            const Array & params_)
        : Base{keys_type_, values_types_, argument_types_}
    {
        if (params_.size() != 1)
            throw Exception(ErrorCodes::NUMBER_OF_ARGUMENTS_DOESNT_MATCH,
                "Aggregate function '{}' requires exactly one parameter "
                "of Array type", getName());
        Array keys_to_keep_;
        if (!params_.front().tryGet<Array>(keys_to_keep_))
            throw Exception(ErrorCodes::ILLEGAL_TYPE_OF_ARGUMENT,
                "Aggregate function {} requires an Array as a parameter",
                getName());
        if constexpr (allow_hash)
            keys_to_keep.reserve(keys_to_keep_.size());
        for (const Field & f : keys_to_keep_)
        {
            keys_to_keep.emplace(f.safeGet<NearestFieldType<T>>());
        }
    }
    String getName() const override
    { return overflow ? "sumMapFilteredWithOverflow" : "sumMapFiltered"; }
    bool keepKey(const T & key) const { return keys_to_keep.count(key); }
};
/** Implements `Max` operation.
 *  Returns true if changed
 */
class FieldVisitorMax : public StaticVisitor<bool>