**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.
{
        auto & merged_maps = this->data(place).merged_maps;
        const auto & rhs_maps = this->data(rhs).merged_maps;
        for (const auto & elem : rhs_maps)
        {
            const auto & it = merged_maps.find(elem.first);
            if (it != merged_maps.end())
            {
                for (size_t col = 0; col < values_types.size(); ++col)
                    if (!elem.second[col].isNull())
                        applyVisitor(Visitor(elem.second[col]), it->second[col]);
            }
            else
                merged_maps[elem.first] = elem.second;
        }
    }
    void serialize(ConstAggregateDataPtr __restrict place, WriteBuffer & buf) const override
    {
        const auto & merged_maps = this->data(place).merged_maps;
        size_t size = merged_maps.size();
        writeVarUInt(size, buf);
        for (const auto & elem : merged_maps)
        {
            keys_type->serializeBinary(elem.first, buf);
            for (size_t col = 0; col < values_types.size(); ++col)
                values_types[col]->serializeBinary(elem.second[col], buf);
        }
    }
    void deserialize(AggregateDataPtr __restrict place, ReadBuffer & buf, Arena *) const override