**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 size_t keys_vec_size = (offsets0[row_num] - keys_vec_offset);
        
        auto & merged_maps = this->data(place).merged_maps;
        for (size_t col = 0, size = values_types.size(); col < size; ++col)
        {
            const auto & array_column = assert_cast<const ColumnArray&>(*columns[col + 1]);
            const IColumn & value_column = array_column.getData();
            const IColumn::Offsets & offsets = array_column.getOffsets();
            const size_t values_vec_offset = offsets[row_num - 1];
            const size_t values_vec_size = (offsets[row_num] - values_vec_offset);
            
            if (keys_vec_size != values_vec_size)
                throw Exception("Sizes of keys and values arrays do not match", ErrorCodes::BAD_ARGUMENTS);
            
            for (size_t i = 0; i < keys_vec_size; ++i)
            {
                auto value = value_column[values_vec_offset + i];
                auto key = key_column[keys_vec_offset + i].get<T>();
                if (!keepKey(key))
                    continue;
                decltype(merged_maps.begin()) it;
                if constexpr (IsDecimalNumber<T>)
                {
                    
                    
                    UInt32 scale = static_cast<const ColumnDecimal<T> &>(key_column).getData().getScale();
                    it = merged_maps.find(DecimalField<T>(key, scale));
                }
                else
                    it = merged_maps.find(key);