**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).

{
private:
    const Field & rhs;
public:
    explicit FieldVisitorMax(const Field & rhs_) : rhs(rhs_) {}
    bool operator() (Null &) const { throw Exception("Cannot compare Nulls", ErrorCodes::LOGICAL_ERROR); }
    bool operator() (Array &) const { throw Exception("Cannot compare Arrays", ErrorCodes::LOGICAL_ERROR); }
    bool operator() (Tuple &) const { throw Exception("Cannot compare Tuples", ErrorCodes::LOGICAL_ERROR); }
    bool operator() (AggregateFunctionStateData &) const { throw Exception("Cannot compare AggregateFunctionStates", ErrorCodes::LOGICAL_ERROR); }
    template <typename T>
    bool operator() (DecimalField<T> & x) const