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

{
        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;
    }
};
/** Implements `Min` operation.
 *  Returns true if changed
 */
class FieldVisitorMin : public StaticVisitor<bool>
{
private:
    const Field & rhs;
public:
    explicit FieldVisitorMin(const Field & rhs_) : rhs(rhs_) {}