**How to reproduce**

CH version: `20.5.2 revision 54435` (latest on `apt` at the moment). Cannot reproduce on `20.4.5`, so it's a regression.

Table:

```sql
create table repro_hits (
    date Date,
    metric Float64
) engine=MergeTree() order by date
```

Query:

```sql
SELECT
    date as period,
    1 as having_check,
    min(date) as period_start,
    addDays(max(date), 1) as period_end,
    dateDiff('second', period_start, period_end) as total_duration,
    sum(metric) as metric_
FROM repro_hits
GROUP BY period
having having_check != -1
```

**Error message and/or stacktrace**
```
Received exception from server (version 20.5.2):
Code: 179. DB::Exception: Received from localhost:9000. DB::Exception: Different expressions with the same alias period_start:
min(date) AS period_start
and
date AS period_start
.
```

The error goes away if I opt out of optimization with `SETTINGS enable_optimize_predicate_expression = 0`.
{
        return !(node->as<ASTFunction>());
    }
    static void visit(ASTPtr & ast, Data & data)
    {
        
        auto * function_node = ast->as<ASTFunction>();
        if (function_node && (function_node->name == "min" || function_node->name == "max" ||
                              function_node->name == "any" || function_node->name == "anyLast"))
        {
            bool keep_aggregator = false;
            KeepAggregateFunctionVisitor::Data keep_data{data.group_by_keys, keep_aggregator};
            KeepAggregateFunctionVisitor(keep_data).visit(function_node->arguments);
            
            if (!keep_aggregator)
            {
                String alias = function_node->alias;
                ast = (function_node->arguments->children[0])->clone();
                ast->setAlias(alias);
            }
        }
    }
};
using SelectAggregateFunctionOfGroupByKeysVisitor = InDepthNodeVisitor<SelectAggregateFunctionOfGroupByKeysMatcher, true>;
}