**Describe the unexpected behaviour**
maxMap is removing entries with empty string or zero value.

**How to reproduce**

String array
SELECT maxMap(a, b) from values ('a Array(String), b Array(String)',(['A'],['']),(['B'],['']));

┌─maxMap(a, b) ─┐
│ ([],[])                    │ 
└───────────┘

Numeric array
`SELECT maxMap(a, b) from values ('a Array(String), b Array(UInt64)',(['A'],[0]),(['B'],[0]));

┌─maxMap(a, b) ─┐
│ ([],[])                    │ 
└───────────┘
`
It happens with all versions published.

**Expected behavior**
We expect this to maintain those keys with its value (empty string or zero).

bool operator() (Null &) const { throw Exception("Cannot compare Nulls", ErrorCodes::LOGICAL_ERROR); }
    bool operator() (Array &) const { throw Exception("Cannot sum Arrays", ErrorCodes::LOGICAL_ERROR); }
    bool operator() (Tuple &) const { throw Exception("Cannot sum Tuples", ErrorCodes::LOGICAL_ERROR); }
    bool operator() (AggregateFunctionStateData &) const { throw Exception("Cannot sum AggregateFunctionStates", ErrorCodes::LOGICAL_ERROR); }
    template <typename T>
    bool operator() (DecimalField<T> & x) const
    {
        auto val = get<DecimalField<T>>(rhs);
        if (val < x)
        {
            x = val;
            return true;
        }
        return false;
    }
    template <typename T>
    bool operator() (T & x) const
    {
        auto val = get<T>(rhs);
        if (val < x)
        {
            x = val;
            return true;
        }
        return false;
    }
};
template <typename T, bool tuple_argument>
class AggregateFunctionMinMap final :